package console

import (
	"fmt"

	"github.com/goravel/framework/contracts/console"
	"github.com/goravel/framework/contracts/schedule"
	"github.com/goravel/framework/facades"
	"github.com/goravel/framework/support/carbon"
)

type Kernel struct {
}

// 定义所有的调度任务
func (kernel *Kernel) Schedule() []schedule.Event {
	return []schedule.Event{

		// .SkipIfStillRunning() // 如果有正在执行的相同任务，则本次取消执行
		// .DelayIfStillRunning() // 如果有正在执行的相同任务，则本次等待正在执行的任务结束后再执行
		// .OnOneServer()
		// .Name("任务名称")

		// 计划任务1
		facades.Schedule().Call(func() {
			now := carbon.Now()
			fmt.Println(now)
			facades.Log().Info("当前时间: ", now)
		}).EveryMinute().Name("job_name"),

		// 计划任务2
		facades.Schedule().Command("list").EveryMinute(),
	}
}

func (kernel *Kernel) Commands() []console.Command {
	return []console.Command{}
}
